let notices=[]

//1.注册通知2.发送通知3.移除通知
/**
 * 订阅者注册通知
 * @param{String} name 通知名称
 * @param{Function} receiver 接受通知并执行的函数
 * @param{Object} observer 注册对象，指page对象或Component对象
 */
function register(name,receiver,observer){
	if(!observer){
		console.log("warning:请添加上下文（页面或组件对象），否则无法发生和移除通知");
		
	}
	let notice={
		name,
		receiver,
		observer
	}
	notices.push(notice)
}
/**
 * 被观察者发生通知（如detail页改变了阅读次数，需要发生通知）
 * @param {String} name 发送的通知名称
 * @param {Object} info 携带的参数
 */
function post(name,info){
	if(notices.length==0){
		console.log("error:目前没有任何通知对象");
		return
	};
	for(let notice of notices){
		if(notice.name==name){
			notice.receiver(info)
		}
	}
}
/**
 * @param {String} name 已经注册且要移除的通知名称
 * @param {Object} observer 页面/组件对象
 */
function remove(name,observer){
	for(let i=0;i<notices.length;i++){
		let noice=notices[i]
		if(notice.name==name){
			if(notice.observer===observer){
				notices.splice(i,1)
				return
			}
		}
	}
	
}
module.exports={
	register,
	post,
	remove
}